package PruebasUnitarias;

import Modelo.Alojador;
import Modelo.AlojadorPersonaje;
import Modelo.Mapa;
import Modelo.Personaje;
import Modelo.Pooglin;
import junit.framework.TestCase;

public class AlojadorPersonajesTest extends TestCase {
	
	public void testAlojar(){
		Mapa unMapa = new Mapa();
		Personaje unPersonaje = new Pooglin(unMapa);
				
		Alojador unAlojador = new AlojadorPersonaje();
		assertFalse(unAlojador.estaAlojado(unPersonaje));
		
		unAlojador.alojar(unPersonaje);
		assertTrue(unAlojador.estaAlojado(unPersonaje));
	}
	
	public void testAlojarMasDeDos(){
		Mapa unMapa = new Mapa();
		Personaje unPersonaje = new Pooglin(unMapa);
		Personaje unPersonaje2 = new Pooglin(unMapa);
		Personaje unPersonaje3 = new Pooglin(unMapa);
				
		Alojador unAlojador = new AlojadorPersonaje();
		assertFalse(unAlojador.estaAlojado(unPersonaje));
		assertFalse(unAlojador.estaAlojado(unPersonaje2));
		assertFalse(unAlojador.estaAlojado(unPersonaje3));
		
		unAlojador.alojar(unPersonaje);
		assertTrue(unAlojador.estaAlojado(unPersonaje));
		unAlojador.alojar(unPersonaje2);
		assertTrue(unAlojador.estaAlojado(unPersonaje2));
		unAlojador.alojar(unPersonaje3);
		assertTrue(unAlojador.estaAlojado(unPersonaje3));
	}
	
	public void testDesalojar(){
		Mapa unMapa = new Mapa();
		Personaje unPersonaje= new Pooglin(unMapa);
		
		Alojador unAlojador = new AlojadorPersonaje();
		assertFalse(unAlojador.estaAlojado(unPersonaje));
		
		unAlojador.alojar(unPersonaje);
		assertTrue(unAlojador.estaAlojado(unPersonaje));
		
		unAlojador.desalojar(unPersonaje);
		assertFalse(unAlojador.estaAlojado(unPersonaje));	
	}
	
	public void testDesalojarMasDeDos(){
		Mapa unMapa = new Mapa();
		Personaje unPersonaje = new Pooglin(unMapa);
		Personaje unPersonaje2 = new Pooglin(unMapa);
		Personaje unPersonaje3 = new Pooglin(unMapa);
				
		Alojador unAlojador = new AlojadorPersonaje();
		unAlojador.alojar(unPersonaje);
		assertTrue(unAlojador.estaAlojado(unPersonaje));
		unAlojador.alojar(unPersonaje2);
		assertTrue(unAlojador.estaAlojado(unPersonaje2));
		unAlojador.alojar(unPersonaje3);
		assertTrue(unAlojador.estaAlojado(unPersonaje3));
		
		unAlojador.desalojar(unPersonaje);
		assertFalse(unAlojador.estaAlojado(unPersonaje));	
		unAlojador.desalojar(unPersonaje3);
		assertFalse(unAlojador.estaAlojado(unPersonaje3));
		unAlojador.desalojar(unPersonaje2);
		assertFalse(unAlojador.estaAlojado(unPersonaje2));	
	}

}
